package org.suwenqian.airoleplayingchatbackend.dao.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 角色实体类，对应数据库中的角色表。
 * 包含角色的基本信息，如角色名称、描述、头像等。
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Entity
@TableName("role")
public class RoleDO {
    /**
     * 角色ID，主键，自增。
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 角色名称，如“哈利波特”，不能为空。
     */
    private String name;

    /**
     * 角色背景描述，可选。
     */
    private String description;

    /**
     * 角色能力
     */
    private String ability;

    /**
     * 角色性格
     */
    private String personalities;

    /**
     * 角色背景故事
     */
    private String backgroundStory;
    /**
     * 角色头像的URL地址，可选。
     */
    private String avatarUrl;

    /**
     * 塑造角色性格和对话风格的Prompt模板，不能为空。
     */
    private String promptTemplate;

    /**
     * 角色首次聊天的打招呼消息，可选。
     */
    private String helloMsg;

    /**
     * TTS语音合成使用的音色ID，可选。
     */
    private String ttsVoiceId;

    /**
     * 是否公开可见，1表示是，0表示否，默认为1。
     */
    private Byte isPublic;

    /**
     * 创建时间，默认值为当前时间戳。
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间，默认值为当前时间戳，并在更新时自动更新。
     */
    private LocalDateTime updatedAt;

    /**
     * 是否为默认角色，1表示是，0表示否，默认为0。
     */
    private Integer isDefault;

    /**
     * 用户创建角色的用户ID，外键关联用户表。
     */
    private Long userId;
}
